Overview
This document quantifies the number of LMI households by utility zone in select states. We use state specific LMI definitions and overlay utility zones to estimate the LMI population covered.
Utility coverage is provided by either the HIFLD national level electric retail service territories or, preferably, state sources that are more granular. Note HIFLD often provides overlapping areas (ex: a municipal boundary and an utility provider) that result in the number of households up to 100% AMI being counted multiple times.
Summary Tables
New Mexico
LMI Qualification:
- Medicaid
- SNAP
- LIHEAP
- First-time home owner programs
- Affordable housing facilities
- HUD data: https://resources.hud.gov/#layers-menu
- state specific to supplement: https://housingnm.org/find-housing/rentals/affordable
- Low-income housing
- State and federal income tax credit
- Entire multi-family housing project may qualify if the entire load can be proved to be low-income subscribers, with consent of all tenants of record.
- LMI - 80% of AMI
Public Housing
# nm_data <- read_excel("nm_public_housing.xlsx")
#
# register_google( key='AIzaSyAoldbWBmW88JZSqiNDW4cKDgIbHI_umco')
#
# library(ggmap)
#
# # Assuming your 'nm_data' dataframe has columns 'Address' and 'Address 2'
# # Create a new column to store the full address (combining Address and Address 2)
# nm_data$full_address <- paste(nm_data$Address, nm_data$`Address 2`, sep = ", ")
#
# # Use geocode() to get latitude and longitude for each address
# geocoded_data <- geocode(nm_data$full_address)
#
# # Add latitude and longitude columns to the original dataframe
# nm_data$Latitude <- geocoded_data$lat
# nm_data$Longitude <- geocoded_data$lon
#
# nm_data <- nm_data %>%
# filter(!is.na(Longitude))
#
# nm_data <- st_as_sf(nm_data, coords = c("Longitude", "Latitude"), crs = st_crs(nm_blocks))
# st_write(nm_data, "nm_public_housing.shp")
nm_public_housing <- st_read("nm_public_housing.shp")
## Reading layer `nm_public_housing' from data source
## `/Users/jacobford/Library/CloudStorage/GoogleDrive-jake@solstice.us/Shared drives/Product | Jake/Geocoding/Qualified LMI by Utility Zones/lmi_by_utility/nm_public_housing.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 226 features and 6 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: -108.8368 ymin: 31.79585 xmax: -103.048 ymax: 36.91717
## Geodetic CRS: NAD83
library(leaflet.extras)
nm_pub_in_util <- nm_public_housing %>%
st_point_on_surface() %>%
st_join(temp_util %>% select(util_name = NAME)) %>%
filter(!is.na(util_name))
## Warning in st_point_on_surface.sf(.): st_point_on_surface assumes attributes
## are constant over geometries of x
## Warning in st_point_on_surface.sfc(st_geometry(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
map %>%
addMarkers(data=nm_public_housing,
group="Public Housing",
# color="black",
# radius=2,
popup=paste("Name: ", nm_public_housing$Name)) %>%
addMarkers(data = nm_pub_in_util,
group="Public Housing in Utility Zones",
# color="red",
popup=paste("Name: ", nm_pub_in_util$util_name)) %>%
addLayersControl(
overlayGroups=c("80% AMI Percent", "80% AMI Count", "Utility Zone", "SNAP", "Medicaid", "Public Housing", "Public Housing in Utility Zones"), # Update the order for consistency
options = layersControlOptions(collapsed = FALSE)
) %>%
hideGroup("80% AMI Percent") %>% hideGroup("SNAP") %>% hideGroup("80% AMI Count") %>% hideGroup("Medicaid") %>% hideGroup("Public Housing in Utility Zones")
## Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
## Need '+proj=longlat +datum=WGS84'
## Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
## Need '+proj=longlat +datum=WGS84'